#pragma once

#include "Event.h"

namespace Origin
{
    class ORIGIN_API AppEvent: public Event
    {
    public:
        EVENT_CLASS_CATEGORY(ApplicationEventCategory)
    };

    class ORIGIN_API AppTickEvent : public AppEvent 
    {
    public:
        AppTickEvent() { }
        virtual std::string ToString() const override
        {
            std::stringstream ss;
            ss << "AppTickEvent";
            return ss.str();
        }
        EVENT_CLASS_TYPE(AppTick)
    };

    class ORIGIN_API AppUpdateEvent : public AppEvent
    {
    public:
        AppUpdateEvent() { }
        virtual std::string ToString() const override
        {
            std::stringstream ss;
            ss << "AppUpdateEvent";
            return ss.str();
        }
        EVENT_CLASS_TYPE(AppUpdate)
    };

    class ORIGIN_API AppRenderEvent : public AppEvent
    {
    public:
        AppRenderEvent() { }
        virtual std::string ToString() const override
        {
            std::stringstream ss;
            ss << "AppRenderEvent";
            return ss.str();
        }
        EVENT_CLASS_TYPE(AppRender)
    };
}